package gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import model.Agenda;
import model.Chambre;
import model.LigneReservation;
import javax.swing.JScrollPane;

import Controleur.ControleurSejour;

public class PanelSelectionChambre extends JPanel {
	private int nbChambre;
	private JList lstChambres;
	private JLabel lblChambresAChoisir;
	private static final String CHAMBRE_DISPO = "Chambres a choisir : ";
	
	public PanelSelectionChambre(LigneReservation res, final ActionListener ctrl){
		nbChambre = res.getQuantite();
		setBounds(0, 0, 532, 217);
		setLayout(null);
		
		JLabel lblCategorieDeChambre = new JLabel("Categorie de chambre reserv\u00E9");
		lblCategorieDeChambre.setBounds(12, 13, 211, 16);
		add(lblCategorieDeChambre);
		
		JLabel lblChambreDisponible = new JLabel("Chambre disponible");
		lblChambreDisponible.setBounds(12, 42, 133, 16);
		add(lblChambreDisponible);
		
		
		JLabel lblcatchambre = new JLabel(res.getCategorieChambre().getCategorie());
		lblcatchambre.setBounds(235, 13, 169, 16);
		add(lblcatchambre);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(12, 71, 508, 133);
		add(scrollPane);
		
		lstChambres = new JList();
		scrollPane.setViewportView(lstChambres);
		List<Chambre> tempChambres = new ArrayList<Chambre>();
		tempChambres = Agenda.getInstance().chambresDispoDate(res.getCategorieChambre(), res.getDateArrive(), res.getDateDepart());
		lstChambres.setListData(tempChambres.toArray());
		lstChambres.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		lstChambres.addListSelectionListener(new ListSelectionListener() {
			
			@Override
			public void valueChanged(ListSelectionEvent arg0) {
				if (lstChambres.getSelectedIndex() >= 0) {
					ctrl.actionPerformed(new ActionEvent(this, lstChambres.getSelectedIndex(), 
							String.valueOf(ControleurSejour.CHAMBRE_SELECT_LIST)));
				}
			}
		});
		
		lblChambresAChoisir = new JLabel(CHAMBRE_DISPO + nbChambre);
		lblChambresAChoisir.setBounds(235, 42, 169, 16);
		add(lblChambresAChoisir);
		
		setVisible(true);
	}
	
	public int getSelectedChambreIndex() {
		return lstChambres.getSelectedIndex();
	}
	
	public void decrementChambreDispo(){
		lblChambresAChoisir.setName(CHAMBRE_DISPO + --nbChambre);  
	}
	
	public int getNBChambre(){
		return nbChambre;
	}
	
	public void modeModification(){
		
	}
}
